using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Rocket
{
    class Program
    {
        int left = 0, top = 0;
        static void Main(string[] args)
        {
            Thread Mob = new Thread(Mobs); //Создаем новый объект потока для генерации мобов
            Thread Refresh = new Thread(Refr); //Создаем новый объект потока для обновления экрана
           
            Refresh.Start(); //запускаем потоки
            Mob.Start(); 
            int a = 1;
            int left = 0, top = 0;
            int[] MovArr = new int[2];

            //Ракета :3
            string rocket = ":===>";
            //Настройка консоли
            Console.WindowWidth = 80;
            Console.WindowHeight = 20;

            //Цикл по отрисовке ракеты
            while (a != 0)
            {
                Console.SetCursorPosition(left, top);
                Console.WriteLine(rocket);
                //Чтение новых координат
                RocketMove poz = new RocketMove();
                MovArr = poz.Move(left, top);
                left = MovArr[1];
                top = MovArr[0];


            }
        }




        static void Mobs()
        {

            int a = 1;
            string mob = "@";
            string nul = " ";

            //Переменные для кординат и количества мобов.
            int MobLeft, MobTop, MobValue = 4;
            int[] MobData = new int[MobValue];

            Random rnd = new Random();

            //Общий генерации мобов и отрисовки
            while (a != 0)
            {

                for (int i = 0; i < MobValue; i++)
                {
                    MobTop = rnd.Next(1, 15);
                    MobData[i] = MobTop;
                }

                MobLeft = 79;

                //Цикл отрисовки
                while (MobLeft > 0)
                {
                    //Отрисовка мобов
                    for (int i = MobValue - 1; i > 0; i--)
                    {
                        if (MobLeft < 79)
                        {
                            Console.SetCursorPosition(MobLeft + 1, MobData[i]);
                            Console.WriteLine(nul);

                        }
                        Console.SetCursorPosition(MobLeft, MobData[i]);
                        Console.WriteLine(mob);
                    }
                    MobLeft--;
                    Thread.Sleep(300);
                    
                }

            }
        }

        static void Refr()
        {
            int a = 1;
            string[] gora = new string[5];
            int left = -5, top = 0;

            //Jкружениt (горы)
            gora[4] = "                                                      ###                      ";
            gora[3] = "                                           ####      #######                   ";
            gora[2] = " #######                #####           ########    ##########          ###### ";
            gora[1] = "############         ##########       ##########################      #########";
            gora[0] = "###############################################################################";
            while (a != 0)
            {
                Console.Clear();
                //Отрисовка гор
                for (int i = 0; i != 5; i++)
                {
                    Console.SetCursorPosition(1, 21 - (i + 1));
                    Console.WriteLine(gora[i]);
                }
                Console.SetCursorPosition(0,0);
                Console.WriteLine("Пиздец консоль виндовая кривотня ебаная");
                Thread.Sleep(2000);
            }
        }


    }

}
